﻿using NewLife.Data;
using System.Text;

namespace NetClient;

/// <summary>
/// Packet包数据封装
/// </summary>
public class LogFileMessage
{
    /// <summary>
    /// 是否新增文件
    /// </summary>
    public bool IsNewFile { get; set; }

    /// <summary>
    /// 文件名
    /// </summary>
    public string FileName { get; set; }

    /// <summary>
    /// 内容
    /// </summary>
    public byte[] Data { get; set; }

    public Int64 Length { get; set; }

    public Packet CreatePacket()
    {
        // 是否新增文件
        var firstPart = Encoding.UTF8.GetBytes(IsNewFile ? "1" : "0");
        // 文件名
        var secondPart = Encoding.UTF8.GetBytes(FileName);
        // 累加
        var sendData = CombineArrays(firstPart, secondPart);
        //Console.WriteLine("组装后数据：" + Encoding.UTF8.GetString(secondData));
        if (Data != null)
        {
            sendData = CombineArrays(sendData, Data);
        }
        Console.WriteLine("Packet包裹数据：" + Encoding.UTF8.GetString(sendData));
        var packet = new Packet(sendData);
        return packet;
    }

    // 将两个数组组合起来
    private static byte[] CombineArrays(byte[] array1, byte[] array2)
    {
        // 创建一个新数组，其长度为两个数组的长度之和
        int totalLength = array1.Length + array2.Length;
        byte[] combinedArray = new byte[totalLength];

        // 将第一个数组的数据拷贝到新数组的开头
        Array.Copy(array1, 0, combinedArray, 0, array1.Length);

        // 将第二个数组的数据拷贝到新数组的剩余部分
        Array.Copy(array2, 0, combinedArray, array1.Length, array2.Length);

        return combinedArray;
    }
}